<?php
declare (strict_types = 1);

namespace app\adminapi\controller;

use app\adminapi\business\BrandBusiness;
use think\Exception;
use think\exception\HttpException;
use think\exception\ValidateException;
use think\facade\Db;
use think\Request;


/***
 * 没有分层之前
 * 从入口文件=》 控制器（参数/业务判断）=》模型 或者控制展示视图
 * 分层
 * 通俗的 就是把控制器的代码进行拆分
 *
 * 从入口文件=》 控制器（参数验证） =》 业务逻辑层进行处理=》 模型
 *
 * Class Brand
 * @package app\adminapi\controller
 */
class Brand
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index(Request $request)
    {
        try {

            # 分页查询数据
            $limit = $request->get('limit',5);//每页显示的条数
            if (!is_numeric($limit)) {
                abort(2001,'每页显示的条数只能是数字');
            }
            $page = $request->get('page',1);// 当前页

            if (!is_numeric($page)) {
                abort(2001,'页码只能是数字');
            }

            # 通过业务逻辑层进行处理、获取数据
            $data = BrandBusiness::list($limit);
            
            return  success($data);

        }catch (Exception $exception) {
            return  fail($exception->getCode(),$exception->getMessage());
        }catch (HttpException $httpException) {
            return  fail($httpException->getStatusCode(),$httpException->getMessage());
        }



    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        // 添加品牌

        try {
            // 业务逻辑

            $param = $request->all();

            // 验证参数 、自己完成
            $logo = str_replace("http://adminapi.pyg.com",'',$param['logo']);
            // 判断文件是否存在
            if (!empty($logo) && !file_exists($logo)) {
                abort(4004,"品牌logo不存在");
            }

            $result = \app\common\model\Brand::create([
                'name' => $param['name'],
                'desc' => $param['desc'],
                'logo' => $logo,
            ]);

            if ($result) {
                return  success();
            } else {
                abort(2003,'添加失败');
            }

        }catch (ValidateException $validateException) {
            # 捕获到的错误信息
            return fail($validateException->getCode(),$validateException->getMessage());
        }catch (HttpException $httpException) {
            # 捕获到的错误信息
            return fail($httpException->getStatusCode(),$httpException->getMessage());
        }

    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {

        try {

            if (!is_numeric($id)) {
                abort(2001,"参数错误");
            }

            # 进行删除操作、在业务逻辑里面进行删除
            BrandBusiness::delete($id);
            return  success();

        }catch (Exception $exception) {
            return  fail($exception->getCode(),$exception->getMessage());
        }catch (HttpException $httpException) {
            return  fail($httpException->getStatusCode(),$httpException->getMessage());
        }

    }
}
